Generally, applications may be configured to maintain network connectivity and receive network communications while in a suspended state. Maintaining network connectivity is facilitated by incoming network packets. A packet is matched to a data pattern of an application that is wake-enabled in order to wake the application. A data pattern may refer to a sequence in data packets associated with an application that when recognized wakes the application. In operation, an operating system (OS) that runs the application may plumb a data pattern to a network interface controller (NIC) corresponding to a wake-enabled transport connection of the application. When a received packet matches the data pattern for the transport connection, the NIC will interrupt the OS to resume the suspended application such that the packet is communicated to the application.
Current schemes for waking an application in suspended state suffer from lack of scalability in that each application transport connection requires its own pattern. Further, computing devices today include multiple NICs each configured to support a different and limited number of data patterns. As such, the number of application transport connections that are supported for remote wake functionality may change depending on the active NICs on the computing device. The impact of the above is a limitation on the number of applications that can be configured as wake-enabled applications and also inconsistency in the user experience for wake-enabled applications.